/*
 * Copyright (c) 2006-2021, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2021-04-05     RealThread   first version
 */

#include <rtthread.h>
#include <board.h>
#include <drv_common.h>

RT_WEAK void rt_hw_board_init()
{
    extern void hw_board_init(char *clock_src, int32_t clock_src_freq, int32_t clock_target_freq);

    /* Heap initialization */
#if defined(RT_USING_HEAP)
    rt_system_heap_init((void *) HEAP_BEGIN, (void *) HEAP_END);
#endif

    hw_board_init(BSP_CLOCK_SOURCE, BSP_CLOCK_SOURCE_FREQ_MHZ, BSP_CLOCK_SYSTEM_FREQ_MHZ);

    /* Set the shell console output device */
#if defined(RT_USING_DEVICE) && defined(RT_USING_CONSOLE)
    rt_console_set_device(RT_CONSOLE_DEVICE_NAME);
#endif

    /* Board underlying hardware initialization */
#ifdef RT_USING_COMPONENTS_INIT
    rt_components_board_init();
#endif

}

//void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi)
//{
//    GPIO_InitTypeDef GPIO_InitStruct = { 0 };
//    if (hspi->Instance == SPI4)
//    {
//        /* USER CODE BEGIN SPI4_MspInit 0 */
//        __HAL_RCC_GPIOD_CLK_ENABLE()
//        ;
//        /* USER CODE END SPI4_MspInit 0 */
//        /* Peripheral clock enable */
//        __HAL_RCC_SPI4_CLK_ENABLE()
//        ;
//
//        __HAL_RCC_GPIOE_CLK_ENABLE()
//        ;
//        /**SPI4 GPIO Configuration
//         PE2     ------> SPI4_SCK
//         PE5     ------> SPI4_MISO
//         PE6     ------> SPI4_MOSI
//         */
//        GPIO_InitStruct.Pin = GPIO_PIN_2 | GPIO_PIN_5 | GPIO_PIN_6;
//        GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
//        GPIO_InitStruct.Pull = GPIO_NOPULL;
//        GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
//        GPIO_InitStruct.Alternate = GPIO_AF5_SPI4;
//        HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
//
//        /* USER CODE BEGIN SPI4_MspInit 1 */
//        /////////CS0~CS3/////////////////////////////
//        HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);
//        HAL_GPIO_WritePin(GPIOD, GPIO_PIN_3, GPIO_PIN_SET);
//        HAL_GPIO_WritePin(GPIOD, GPIO_PIN_4, GPIO_PIN_SET);
//        HAL_GPIO_WritePin(GPIOD, GPIO_PIN_5, GPIO_PIN_SET);
//
//        GPIO_InitStruct.Pin = GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5;
//        GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
//        GPIO_InitStruct.Pull = GPIO_PULLUP;
//        GPIO_InitStruct.Speed = GPIO_SPEED_MEDIUM;
//        HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
//
//        /* USER CODE END SPI4_MspInit 1 */
//    }
//    else if (hspi->Instance == SPI5)
//    {
//        /* USER CODE BEGIN SPI5_MspInit 0 */
//
//        /* USER CODE END SPI5_MspInit 0 */
//        /* Peripheral clock enable */
//        __HAL_RCC_SPI5_CLK_ENABLE()
//        ;
//
//        __HAL_RCC_GPIOF_CLK_ENABLE()
//        ;
//        /**SPI5 GPIO Configuration
//         PF7     ------> SPI5_SCK
//         PF8     ------> SPI5_MISO
//         PF9     ------> SPI5_MOSI
//         */
//        GPIO_InitStruct.Pin = GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9;
//        GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
//        GPIO_InitStruct.Pull = GPIO_NOPULL;
//        GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
//        GPIO_InitStruct.Alternate = GPIO_AF5_SPI5;
//        HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
//
//        /* USER CODE BEGIN SPI5_MspInit 1 */
//
//        /* USER CODE END SPI5_MspInit 1 */
//    }
//}
